package com.dalin.platform.loa.service;

import java.util.List;

import com.dalin.common.pager.PageInfo;
import com.dalin.framework.service.FrameService;
import com.dalin.platform.loa.condition.LoaDicTypeCondition;
import com.dalin.platform.loa.condition.LoaProjectCondition;
import com.dalin.platform.loa.condition.LoaRoleCondition;
import com.dalin.platform.loa.condition.LoaUserCondition;
import com.dalin.platform.loa.vo.LoaDicItemTreeVo;
import com.dalin.platform.loa.vo.LoaDicTypeVo;
import com.dalin.platform.loa.vo.LoaOrganTreeVo;
import com.dalin.platform.loa.vo.LoaProjectVo;
import com.dalin.platform.loa.vo.LoaRoleVo;
import com.dalin.platform.loa.vo.LoaUserVo;

/*****************************************************************************
 * @content: 系统设置等通用接口                                                                                                             *
 * @author : 那建林                                                                                                                                 *
 * @crtDate: 2010-05-12                                                     *
 ****************************************************************************/
public interface LoaService extends FrameService {
	/*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaProjectCondition cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2010-06-17
     * @modDate: 2010-06-17
     */
    PageInfo queryLoaProjects(LoaProjectCondition cond) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long id
     * @return : LoaProjectVo
     * @author : 那建林
     * @crtDate: 2010-06-17
     * @modDate: 2010-06-17
     */
    LoaProjectVo findLoaProjectById(Long id) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaProjectVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-17
     * @modDate: 2010-06-17
     */
    void addLoaProject(LoaProjectVo vo) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaProjectVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-17
     * @modDate: 2010-06-17
     */
    void modifyLoaProject(LoaProjectVo vo) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : String ids
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-17
     * @modDate: 2010-06-17
     */
    void delLoaProjectsByIds(Long[] idArray) throws Exception;
    
    
    
    
    
    /*************************************************************************
	 * @content: 判断用户登录名是否重复
     * @param  : userId 用户ID 如果是新增填写null
     * @param  : loginName 待验证的登录名
     * @return : boolean
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-12-12 22:13:29
     * @modDate: 2010-06-03 22:13:29
     */
    boolean isExistLoginName(Long userId, String loginName) throws Exception;
    
	/*************************************************************************
	 * @content: 根据组装条件来查询用户表
     * @param  : cond
     * @return : PageInfo
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-03
     * @modDate: 2010-06-03
     */
    PageInfo queryLoaUsers(LoaUserCondition cond) throws Exception;


    /*************************************************************************
	 * @content: 根据主键来查询实体beanVo
     * @param  : id LOA_USER主键
     * @return : LoaUserVo
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-03
     * @modDate: 2010-06-03
     */
    LoaUserVo findLoaUserById(Long id) throws Exception;


    /*************************************************************************
	 * @content: 增加一条记录
     * @param  : vo值对象
     * @return : void
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-03
     * @modDate: 2010-06-03
     */
    Long addLoaUser(Long projectId, LoaUserVo vo) throws Exception;

    List<List<String>> addLoaUsers(Long projectId, List<List<String>> dataList) throws Exception;
    
    /*************************************************************************
	 * @content: 修改一条记录根据vo里的userId来判断
     * @param  : vo 值对象
     * @return : void
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-03
     * @modDate: 2010-06-03
     */
    void modifyLoaUser(LoaUserVo vo) throws Exception;


    /*************************************************************************
	 * @content: 逻辑删除方法
     * @param  : idArray
     * @return : void
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-03
     * @modDate: 2010-06-03
     */
    void delLoaUsers(Long[] idArray) throws Exception;
    
    
    /*************************************************************************
	 * @content: 批量增加用户的角色
     * @param  : userId 用户主键
     * @param  : roleIdArray 角色ID数组
     * @return : void
     * @remark :
     * @author : 那建林
     * @crtDate: 2010-06-08
     * @modDate: 2010-06-08
     */
    void addUserRoles(Long userId, Long[] roleIdArray) throws Exception;
    
    
    /*************************************************************************
	 * @content: 批量删除用户的角色
     * @param  : userId 用户主键
     * @param  : roleIdArray 角色ID数组
     * @return : void
     * @remark : 
     * @author : 那建林
     * @crtDate: 2010-06-08
     * @modDate: 2010-06-08
     */
    void delUserRoles(Long userId, Long[] roleIdArray) throws Exception;
    
    
    
    
    
    /*************************************************************************
     * @content: 根据组装条件来查询角色信息
     * @param  : cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    PageInfo queryLoaRoles(LoaRoleCondition cond) throws Exception;


    /*************************************************************************
     * @content: 根据主键来查询实体beanVo
     * @param  : Long id
     * @return : LoaRoleVo
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    LoaRoleVo findLoaRoleById(Long id) throws Exception;


    /*************************************************************************
     * @content: 增加一条记录
     * @param  : vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    void addLoaRole(LoaRoleVo vo) throws Exception;


    /*************************************************************************
     * @content:  修改一条记录根据vo里的roleId来判断
     * @param  : LoaRoleVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    void modifyLoaRole(LoaRoleVo vo) throws Exception;


    /*************************************************************************
     * @content: 删除方法
     * @param  : ids 主键字符串以,隔开
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    void delLoaRoles(Long[] idArray) throws Exception;
    
    
    /*************************************************************************
     * @content: 增加角色菜单
     * @param  : roleId 角色ID
     * @param  : idArray ID的数组,~隔开
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-07
     * @modDate: 2010-06-07
     */
    void addRoleMenus(Long roleId, String[] idArray) throws Exception;
    
    
    /*************************************************************************
     * @content: 增加角色用户授权
     * @param  : roleId 角色ID
     * @param  : userIdArray 用户ID的数组
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-08
     * @modDate: 2010-06-08
     */
    void addRoleUsers(Long roleId, Long[] userIdArray) throws Exception;
    
    
    
    
    
    
    
    
    /*************************************************************************
	 * @content: 先根据ids删除记录，然后再根据LoaOrganTreeVo中的id判断是新增还是更改
	 * @param  : LoaOrganTreeVo List
	 * @param  : 删除数组
	 * @throws : java.lang.Exception
	 * @author : 那建林
	 * @crtDate: 2010-07-06
	 * @crtDate: 2010-07-06
	 */
	void addUpDelOrgans(List<LoaOrganTreeVo> treeList, Long[] delIdArray) throws Exception;
    
    
    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaDicTypeCondition cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    PageInfo queryLoaDicTypes(LoaDicTypeCondition cond) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long id
     * @return : LoaDicTypeVo
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    LoaDicTypeVo findLoaDicTypeById(Long id) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaDicTypeVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void addLoaDicType(LoaDicTypeVo vo) throws Exception;
    
    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : idArray 字典库ID数组
     * @param  : projectId 项目ID
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-11-26
     * @modDate: 2010-11-26
     */
    void addLoaDicTypeFromDicRepos(Long[] idArray, Long projectId) throws Exception;

    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : LoaDicTypeVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void modifyLoaDicType(LoaDicTypeVo vo) throws Exception;


    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long[] idArray
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void delLoaDicTypesByIds(Long[] idArray) throws Exception;
    
    /*************************************************************************
     * @content: 改了N遍终于改好了，好累呀，程序员有永远解决不完的问题
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2012-03-29 23:51
     */
    void addUpDelDicItems(Long typeId, List<LoaDicItemTreeVo> treeList, Long[] delIdArray) throws Exception;
}
